This disclosure relates generally to the field of video streaming techniques. More specifically, this disclosure relates to reducing codec-related latency in channel switching for video streaming.
Portable devices increasingly are being utilized to watch traditional programs (e.g., movies, news, and live broadcasts). The programs are encoded and transmitted over wireless or wired networks to distribution devices (e.g., cable boxes) and/or portable devices (e.g., smart phones, laptops or tablets). The programs are typically encoded and sent over the networks in coded data set parsed into chunks (e.g., “transmission units”).
The chunks may include one or more reference frames and a plurality of frames that are encoded based on the reference frames. The chunks may include an index frame (I-frames) that is encoded without using information from any other frames, predictive frames (P-frames) that express differences from the content present in the index frame, and bidirectional frames (B-frames) that express differences from the index frame and the predictive frames that occur before and after the bidirectional frame. The frames in the chunks may occur in an order that is different from the order in which the content represented by the frames in chunks should be presented.
To display the video, the device receiving the chunks will buffer the chunk and decode the frames in the chunk for display. The decoding may include converting each frame into the original frame and arranging the frames in the correct order. While the user may observe a delay at the beginning of a video segment due to the buffering and decoding, because the chunks are received and decoded continuously one right after another, the delay due to the buffering and decoding is not observed during regular playback.
However, when a user makes a request to transition to a video source in a new channel, there is a delay associated with switching to the new video source. The contributing factors to the delay may include, network latency, buildup of bit stream buffer, decoding latency and display latency. During this delay the user may observe a gap in the video display. To reduce the gap some methods continue to display the content of the original video source until the video content of the new chunk is ready to be displayed. Other methods, to reduce the buffer and/or decoding latency, transition at a time when the index frame of the chunk is encountered in the new video source. However, these methods do not transition at the time that the user makes the request. In addition, when using these methods on live streaming content, the delay causes content of the new video source to be missed.
A similar delay may also be observed when transitioning between low and high resolution sources of the same video content. When transitioning between the same content, existing methods skip or replay a portion of the content due to the delay.
Accordingly, there is a need for techniques to reduce the delay when transitioning between multiple channels during video streaming.